package org.devocean.groupbuying.service.impl;

import java.util.List;

import org.devocean.groupbuying.dao.PurchaseItemDAO;
import org.devocean.groupbuying.domain.PurchaseItem;
import org.devocean.groupbuying.service.PurchaseItemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
public class PurchaseItemServiceImpl implements PurchaseItemService {

	@Autowired
	private PurchaseItemDAO purchaseItemDAO;

	@Transactional(readOnly = true)
	public PurchaseItem getPurchaseItemById(Integer id) {

		return purchaseItemDAO.findPurchaseItemById(id);
	}

	@Transactional
	public PurchaseItem addOrUpdatePurchaseItem(PurchaseItem purchaseItem) {
		if (purchaseItem.getPurchaseItemID() == null) {
			return purchaseItemDAO.savePurchaseItem(purchaseItem);
		} else {
			return purchaseItemDAO.updatePurchaseItem(purchaseItem);
		}

	}

	@Transactional
	public void removePurchaseItem(Integer id) {
		purchaseItemDAO.deletePurchaseItem(id);
	}

	public long countPurchaseItems() {

		return purchaseItemDAO.countPurchaseItems();
	}

	@Transactional
	public List<PurchaseItem> getAllPurchaseItems() {
		return purchaseItemDAO.findAllPurchasesItems();
	}

	public long countPurchaseItemsByCustomerAndDeal(Integer customerID,
			Integer dealID) {
		return purchaseItemDAO.countPurchaseItemsByCustomerAndDeal(customerID,
				dealID);
	}

}
